using UnityEngine;
using System.Collections;

public class FunctionElev : MonoBehaviour 
{

	public GameObject elev1;
	public GameObject elev2;
	public GameObject elev3;
	public GameObject andar1;
	public GameObject andar2;
	public GameObject andar3;
	public GameObject player;

	public bool dentroElev;
	public int andar = 1;
	public bool direcao;
	public float time;
	float timeOriginal;
	public float trocaDeAndar;
	float trocaDeAndarOriginal;
	public bool timeRun;

	public float ElevX;
	public float ElevY;

	// Use this for initialization
	void Start () 
	{
		//fixo o valor original da variavel time
		timeOriginal = time;
		trocaDeAndarOriginal = trocaDeAndar;
	}
	
	// Update is called once per frame
	void Update ()
	{ 

		//faço a contagem regreciva, tanto para que o elevador feche, quanto para que ele chegue no proximo andar
		trocaDeAndar -= Time.deltaTime;
		time -= Time.deltaTime;

		//verifico se o tempo de transiçao de um andar para o outro acabou
		if(trocaDeAndar < 0)
		{
			trocaDeAndar = 0;
			timeRun = false;
		}
		else//caso nao, o tempo do elevador aberto fica fixo no original
			{
				timeRun = true;
			}
		if(timeRun)
		{
			time = timeOriginal;

		}

		//testo se o tempo do elevador aberto se esgotou e atualizo os elevadores para que o proximo andar possa ser aberto
		if(time < 0)
		{
			//aqui controlo se o elevador sobe ou desce
			if(!direcao)
			{
				andar++;
			}
			if(direcao)
			{
				andar--;
			}
			time = 0;
			trocaDeAndar = trocaDeAndarOriginal;
			elev1.GetComponent<Elevador>().open = false;
			elev2.GetComponent<Elevador>().open = false;
			elev3.GetComponent<Elevador>().open = false;
		}

		//digo para que direçao o elevador deve seguir
		if(andar == 0)
		{
			direcao = false;
		}
		if(andar == 2)
		{
			direcao = true;
		}

		//abre os elevadores
		if(andar == 0 && trocaDeAndar == 0)
		{
			elev1.GetComponent<Elevador>().open = true;
		}
		if(andar == 1 && trocaDeAndar == 0)
		{
			elev2.GetComponent<Elevador>().open = true;
		}
		if(andar == 2 && trocaDeAndar == 0)
		{
			elev3.GetComponent<Elevador>().open = true;
		}

	
		if(player.GetComponent<Player>().enterElev)
		{
			dentroElev = true;
			player.GetComponent<SpriteRenderer>().sortingOrder = 2;
			if(andar1.GetComponent<AlterneElev>().noElev)
			{
				ElevX = andar1.transform.position.x;
				ElevY = andar1.transform.position.y;
				if(dentroElev)
				{
				  player.transform.position = new Vector3(ElevX, ElevY,0);
				}
			}
			if(andar2.GetComponent<AlterneElev>().noElev )
			{
				ElevX = andar2.transform.position.x;
				ElevY = andar2.transform.position.y;
				if(dentroElev)
				{
				  player.transform.position = new Vector3(ElevX, ElevY,0);
				}				
			}
			if(andar3.GetComponent<AlterneElev>().noElev )
			{
				ElevX = andar3.transform.position.x;
				ElevY = andar3.transform.position.y;
				if(dentroElev)
				{
				  player.transform.position = new Vector3(ElevX, ElevY,0);
				}
			}

			if(elev1.GetComponent<Elevador>().open == false && andar1.GetComponent<AlterneElev>().noElev)
			{
				ElevX = andar2.transform.position.x;
				ElevY = andar2.transform.position.y;
				if(trocaDeAndar == 0)
				{
					player.transform.position = new Vector3(ElevX, ElevY,0);
				}
			}
			if(elev2.GetComponent<Elevador>().open == false && andar2.GetComponent<AlterneElev>().noElev)
			{	
				if(direcao)
				{
					ElevX = andar3.transform.position.x;
					ElevY = andar3.transform.position.y;
				}
				if(!direcao)
				{
					ElevX = andar1.transform.position.x;
					ElevY = andar1.transform.position.y;
				}
				if(trocaDeAndar == 0)
				{
					player.transform.position = new Vector3(ElevX, ElevY,0);
				}
			}
			if(elev3.GetComponent<Elevador>().open == false && andar3.GetComponent<AlterneElev>().noElev)
			{
				ElevX = andar2.transform.position.x;
				ElevY = andar2.transform.position.y;
				if(trocaDeAndar == 0)
				{
					player.transform.position = new Vector3(ElevX, ElevY,0);
				}
			}
		}
		else
		{
			dentroElev = false;
			player.GetComponent<SpriteRenderer>().sortingOrder = 4;
		}
	}




}
